﻿define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, Bootstrap, Backend, Table, Form) {

    var Controller = {
        index: function () {
            // 初始化表格参数配置
            Table.api.init({
                extend: {
                    index_url: 'community/community/index',
                    add_url: 'community/community/add',
                    edit_url: 'community/community/edit',
                    multi_url: 'community/community/multi',
                    del_url: 'community/community/del',
                    table: 'fa_community',
                }
            });

            var table = $("#table");

            // 初始化表格
            table.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url,
                queryParams: function (params) {
                    params.rel_type = Config.relType;
                    params.rel_id = Config.relId;
                    return params;
                },
                escape: false,
                pk: 'id',
                sortName: 'id', //要使排序生效，在前面添加 weigh desc, 并且数据表weigh字段不能全为0,controller里$list=...->order前再添加->order("weigh desc")
                columns: [
                    [
                        {checkbox: true},
                        {field: 'id', title: __('Id'), sortable: true},
                        {field: 'city_id', title: '城市', sortable: true, operate: 'LIKE'},
                        {field: 'name', title: '社区办学机构名称', sortable: true, operate: 'LIKE'},
                        {field: 'province_id', title: '行政区划社区', operate: 'LIKE'},
                        {field: 'address', title: '地址', operate: 'LIKE'},
                        {field: 'createtime', title: __('创建时间'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime, sortable: true},
                        {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate,
                            buttons: [
                                {
                                    name: 'list',
                                    classname: 'btn btn-xs btn-default btn-click',
                                    icon: 'fa fa-list',
                                    title: '社区教学点',
                                    click: function (value, row, index) {
                                        Backend.api.open('/ocation/ocation/index?rel_type=2&rel_id='+row.id+'&ref=addtabs&XDEBUG_SESSION_START=53425', '社区教学点', {
                                            max: true,
                                            area: ['80%', '80%'],
                                            //offset: ['0px', '0px'],
                                            callback: function (data) {
                                                Layer.alert("接收到回传数据：" + JSON.stringify(data), {title: "回传数据"});
                                            }
                                        });
                                    }
                                }
                            ]
                        }
                    ]
                ]
            });
            // 移除自动刷新页面的行为
            // $(document).on('fa.event.success', function(event, data) {
            //     setTimeout(function() {
            //         location.reload();
            //     }, 1000);
            // });

            var script = document.createElement('script');
            script.src = '/assets/js/backend/common/index.js';
            document.head.appendChild(script);
            // 为表格绑定事件
            Table.api.bindevent(table);
        },
        add: function () {
            $(function () {
                // 加载省级数据
                 var $province = $('#province');
                 $.getJSON('/cityarea/cityarea/getAreas', {level: 1}, function (provinces) {
                     $province.append('<option value="">请选择省份</option>');
                     $.each(provinces, function (index, province) {
                         $province.append('<option value="' + province.id + '">' + province.name + '</option>');
                     });
                     // 触发加载市级数据
                     var $city = $('#city');
                     $province.change(function () {
                         var provinceId = $(this).val();
                         $.getJSON('/cityarea/cityarea/getAreas?XDEBUG_SESSION_START=54325', {level: 2, parent_id: provinceId}, function (cities) {
                             $city.empty();
                             $city.append('<option value="">请选择城市</option>');
                             $city.append('<option value="0">区级</option>');
                             $.each(cities, function (index, city) {
                                 $city.append('<option value="' + city.id + '">' + city.name + '</option>');
                             });

                             // 触发加载县级数据
                             $city.change(function () {
                                 var cityId = $(this).val();
                                 if(cityId==0) {
                                     $("#county").hide();
                                     $county.empty();
                                     return;
                                 }else{
                                     $("#county").show();
                                 }
                                 $.getJSON('/cityarea/cityarea/getAreas?XDEBUG_SESSION_START=54325', {level: 3, parent_id: cityId}, function (counties) {
                                     var $county = $('#county');
                                     $county.empty();
                                     $county.append('<option value="-1">请选择城区（县）</option>');
                                     $county.append('<option value="0">市级</option>');
                                     $.each(counties, function (index, county) {
                                         $county.append('<option value="' + county.id + '">' + county.name + '</option>');
                                     });
                                     $county.val(0);
                                     $("#c-rel_type").trigger("change");
                                 });
                                 $("#c-rel_type").trigger("change");
                             });
                             $city.val(2);
                             $city.trigger("change");
                         });
                     });
                     $province.val(1);
                     $province.trigger("change");
                 });
                 $province.trigger("change");
            });
            
            // 绑定AI生成功能
            Controller.api.bindAIEvents();
            Controller.api.bindevent();
        },
        edit: function () {
            var row = JSON.parse($('#row').val());
            var $province = $('select[name="row[province_id]"]');
            $province.append('<option value="">请选择省份</option>');
            $.getJSON('/cityarea/cityarea/getAreas', {level: 1,parent_id: 0}, function (provinces) {
                $.each(provinces, function (index, province) {
                    $province.append('<option value="' + province.id + '">' + province.name + '</option>');
                });
                $province.val(row.province_id);
                // 触发加载市级数据
                $province.change(function () {
                    $.getJSON('/cityarea/cityarea/getAreas', {level: 2, parent_id: 1}, function (cities) {
                        var $city = $('#city');
                        var city_id=$city.val()?$city.val():row.city_id;
                        $city.empty();
                        $city.append('<option value="">请选择城市</option>');
                        $city.append('<option value="0">区级</option>');
                        $.each(cities, function (index, city) {
                            $city.append('<option value="' + city.id + '">' + city.name + '</option>');
                        });
                        $city.val(city_id);
                        // 触发加载县级数据
                        $city.change(function () {
                            var cityId = $(this).val()? $(this).val():row.city_id;
                            if(cityId==0) {
                                $("#county").hide();
                                $county.empty();
                                return;
                            }else{
                                $("#county").show();
                            }
                            $.getJSON('/cityarea/cityarea/getAreas', {level: 3, parent_id: cityId}, function (counties) {
                                var $county = $('#county');
                                $county.empty();
                                $county.append('<option value="">请选择城区（县）</option>');
                                $county.append('<option value="0">市级</option>');
                                $.each(counties, function (index, county) {
                                    $county.append('<option value="' + county.id + '">' + county.name + '</option>');
                                });
                                $county.val(row.district_id);
                            });
                        });
                        $city.trigger('change');
                    });
                });
                $province.trigger('change');
            });

            // 绑定AI生成功能
            Controller.api.bindAIEvents();
            Controller.api.bindevent();
        },
        api: {
            bindevent: function () {
                Form.api.bindevent($("form[role=form]"));
            },
            // 绑定AI生成事件
            bindAIEvents: function () {
                // AI生成社区学校简介功能
                $(document).on('click', '#ai-generate-intro', function(e) {
                    e.preventDefault();
                    var $btn = $(this);
                    var $textarea = $('#c-intro');
                    var communityName = $('#c-name').val().trim();
                    
                    // 检查必要信息
                    if (!communityName) {
                        Toastr.warning('请先填写社区办学名称');
                        return;
                    }
                    
                    // 构建AI提示词
                    var prompt = '请为以下社区学校生成简介：\n';
                    prompt += '社区名称：' + communityName + '\n';
                    prompt += '\n请生成一段150-200字的社区学校简介，要求：\n';
                    prompt += '1. 简要介绍社区学校的基本情况\n';
                    prompt += '2. 突出老年教育的服务宗旨\n';
                    prompt += '3. 体现社区教育的便民特色\n';
                    prompt += '4. 语言简洁明了，适合老年人阅读\n';
                    prompt += '5. 内容真实可信，体现教育价值\n';
                    
                    Controller.api.generateAIContent($btn, $textarea, prompt, 'community_intro', 'AI生成简介');
                });
                
                // AI生成社区学校特色功能
                $(document).on('click', '#ai-generate-feature', function(e) {
                    e.preventDefault();
                    var $btn = $(this);
                    var $textarea = $('#c-feature');
                    var communityName = $('#c-name').val().trim();
                    var communityIntro = $('#c-intro').val().trim();
                    
                    // 检查必要信息
                    if (!communityName) {
                        Toastr.warning('请先填写社区办学名称');
                        return;
                    }
                    
                    // 构建AI提示词
                    var prompt = '请为以下社区学校生成特色介绍：\n';
                    prompt += '社区名称：' + communityName + '\n';
                    if (communityIntro) {
                        prompt += '社区简介：' + communityIntro + '\n';
                    }
                    prompt += '\n请生成一段200-300字的社区学校特色介绍，要求：\n';
                    prompt += '1. 突出社区教育的特点和优势\n';
                    prompt += '2. 体现老年教育的专业性和温馨感\n';
                    prompt += '3. 包含社区文化特色和教学理念\n';
                    prompt += '4. 语言亲切自然，适合老年人阅读\n';
                    prompt += '5. 内容积极正面，体现社区教育价值\n';
                    
                    Controller.api.generateAIContent($btn, $textarea, prompt, 'community_feature', 'AI生成特色介绍');
                });
                
                // 为AI生成按钮添加提示
                $('#ai-generate-intro').tooltip({
                    title: '根据社区名称，AI自动生成社区学校简介',
                    placement: 'top'
                });
                
                $('#ai-generate-feature').tooltip({
                    title: '根据社区名称和简介，AI自动生成社区学校特色介绍',
                    placement: 'top'
                });
            },
            // 通用AI内容生成函数
            generateAIContent: function($btn, $textarea, prompt, type, buttonText) {
                // 显示加载状态
                $btn.prop('disabled', true);
                $btn.html('<i class="fa fa-spinner fa-spin"></i> 生成中...');
                
                // 调用AI生成接口
                $.ajax({
                    url: '/ai/generateText',
                    type: 'POST',
                    data: {
                        prompt: prompt,
                        type: type,
                        max_tokens: 500,
                        temperature: 0.7,
                        provider: 'qianwen'
                    },
                    dataType: 'json',
                    timeout: 60000, // 60秒超时
                    beforeSend: function() {
                    },
                    success: function(response) {
                        if (response.code === 1 && response.data && response.data.content) {
                            // 将生成的内容填入文本框
                            var generatedText = response.data.content.trim();
                            
                            // 使用官方的Summernote方法设置内容
                            try {
                                // 检查是否是富文本编辑器
                                if ($textarea.hasClass('editor')) {
                                    // 直接使用Summernote的API设置内容
                                    if (typeof $.fn.summernote === 'function') {
                                        // 将纯文本转换为HTML格式
                                        var htmlContent = '<p>' + generatedText.replace(/\n/g, '</p><p>') + '</p>';
                                        
                                        // 使用setTimeout确保在DOM更新后执行
                                        setTimeout(function() {
                                            try {
                                                $textarea.summernote('code', htmlContent);
                                            } catch (e) {
                                                $textarea.val(generatedText);
                                            }
                                        }, 100);
                                    } else {
                                        // 如果Summernote不可用，直接设置文本值
                                        $textarea.val(generatedText);
                                    }
                                } else {
                                    // 普通文本框
                                    $textarea.val(generatedText);
                                }
                                
                                Toastr.success('AI生成内容成功！');
                            } catch (e) {
                                // 出错时使用最基本的方法
                                $textarea.val(generatedText);
                                Toastr.success('AI生成内容成功，但编辑器设置失败');
                            }
                        } else {
                            var errorMsg = response.msg || 'AI生成失败，请重试';
                            Toastr.error(errorMsg);
                        }
                    },
                    error: function(xhr, status, error) {
                        var errorMsg = 'AI生成失败';
                        
                        try {
                            if (xhr.responseJSON && xhr.responseJSON.msg) {
                                errorMsg = xhr.responseJSON.msg;
                            } else if (status === 'timeout') {
                                errorMsg = '请求超时，请重试';
                            } else if (xhr.status === 0) {
                                errorMsg = '网络连接失败，请检查网络';
                            } else {
                                errorMsg = 'AI生成失败，错误码：' + xhr.status;
                            }
                        } catch (e) {
                        }
                        
                        Toastr.error(errorMsg);
                    },
                    complete: function() {
                        // 恢复按钮状态
                        $btn.prop('disabled', false);
                        $btn.html('<i class="fa fa-magic"></i> ' + buttonText);
                    }
                });
            },
            formatter: {//渲染的方法
                url: function (value, row, index) {
                    return '<div class="input-group input-group-sm" style="width:250px;"><input type="text" class="form-control input-sm" value="' + value + '"><span class="input-group-btn input-group-sm"><a href="' + value + '" target="_blank" class="btn btn-default btn-sm"><i class="fa fa-link"></i></a></span></div>';
                },
                ip: function (value, row, index) {
                    return '<a class="btn btn-xs btn-ip bg-success"><i class="fa fa-map-marker"></i> ' + value + '</a>';
                },
                status: function (value, row, index) {
                    //添加上btn-change可以自定义请求的URL进行数据处理
                    return '<a class="btn-change text-success" data-url="community/community/status" data-confirm="确认切换状态？" data-id="' + row.id + '"><i class="fa ' + (row.status == 0 || row.status == null ? 'fa-toggle-on fa-flip-horizontal text-gray' : 'fa-toggle-on') + ' fa-2x"></i></a>';
                },
                changeStatus: function (value, row, index) {
                    //添加上btn-change可以自定义请求的URL进行数据处理
                    return '<a class="btn-change text-success" data-url="community/community/changeStatus" data-confirm="确认切换状态？" data-id="' + row.id + '"><i class="fa ' + (row.status === 0 ? 'fa-toggle-on fa-flip-horizontal text-gray' : 'fa-toggle-on') + ' fa-2x"></i></a>';
                }
            },
            events: {//绑定事件的方法
                ip: {
                    //格式为：方法名+空格+DOM元素
                    'click .btn-ip': function (e, value, row, index) {
                        e.stopPropagation();
                        var container = $("#table").data("bootstrap.table").$container;
                        var options = $("#table").bootstrapTable('getOptions');
                        //这里我们手动将数据填充到表单然后提交
                        $("form.form-commonsearch [name='ip']", container).val(value);
                        $("form.form-commonsearch", container).trigger('submit');
                        Toastr.info("执行了自定义搜索操作");
                    }
                }
            }
        }
    };
    return Controller;
});